package com.rfy.novel.chain;


import com.rfy.framework.util.SpringUtil;
import com.rfy.novel.chain.client.*;
import org.springframework.context.annotation.DependsOn;

import java.util.LinkedList;

/**
 * @author zhanghuiyong
 * @创建时间 2019年06月25日
 * @描述: 阅读统一管理链路
 **/
@DependsOn("springUtil")
public class ReadChain {
    /**
     * 链路分发
     *
     * @return
     */
    public Object execute(String type) {

        /** 获取所有链路 */
        LinkedList<Class<?>> readChain = getReadChain();

        for (Class<?> clazz : readChain) {

            SearchWebsite website = (SearchWebsite) SpringUtil.getBean(clazz);

            /** 获得渠道 */
            String websiteType = website.websiteType();

            /** 找到对应渠道 */
            if (websiteType.equals(type)) {
                return website;
            }
        }
        return null;
    }


    /**
     * 获取小说网站链路
     * 先add,优先级越高
     *
     * @return 返回小说网站
     */
    private LinkedList<Class<?>> getReadChain() {
        LinkedList<Class<?>> readList = new LinkedList<>();
        readList.add(SearchWebsiteXbiquge6.class);
        readList.add(SearchWebsiteQidian.class);
        readList.add(SearchWebsiteMiaoJiang.class);
        readList.add(SearchWebsiteXBiQu.class);
        return readList;
    }
}
